package cn.lzit.sy4;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.*;

public class LastAccessServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        String lastAccessTime = null;

        // 获取所有的cookie，并将这些cookie存放在数组中
        Cookie[] cookies = request.getCookies();

        // 遍历cookies数组
        for (int i = 0; cookies != null && i < cookies.length; i++) {
            if ("lastAccess".equals(cookies[i].getName())) {
                // 如果cookie的名称为lastAccess,则获取该cookie的值
                lastAccessTime = cookies[i].getValue();
                break; // 一旦找到名为lastAccess的cookie，就跳出循环
            }
        }
        // 判断是否存在名称为lastAccess的cookie
        if (lastAccessTime == null) {
            response.getWriter().print("您是首次访问本站！！！");
        } else {
            response.getWriter().print("您上次的访问时间是： "
                    + lastAccessTime);
        }
        // 创建cookie,将当前时间作为cookie的值发送给客户端
        String currentTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        Cookie cookie = new Cookie("lastAccess", currentTime);
        // 设置cookie的最大生存时间（例如：一天）
        cookie.setMaxAge(24 * 60 * 60);
        // 发送 cookie
        response.addCookie(cookie);
    }
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 注意：这里应该是调用doGet而不是doPost的递归调用，这可能是一个错误。
        // 在实际应用中，如果不处理POST请求的特殊逻辑，可以简单地重定向到GET请求。
        // 例如：resp.sendRedirect(req.getRequestURI());
        // 但为了这个示例，我们简单地保留这个方法不做其他操作。
        // 注意：正确实现应避免这种递归调用。
        this.doGet(req, resp); // 修改为调用doGet以避免递归错误，但通常不推荐这样做，最好根据实际需求处理POST请求。
    }
}